package com.ksyun.campus.metaserver.domain.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import jakarta.validation.constraints.NotBlank;

/**
 * 创建目录请求参数对象
 * 用于封装客户端发起的mkdirs（创建多级目录）操作的请求参数
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MkdirsRequest {
    
    /**
     * 目录路径，不能为空
     * 例如：/user/test/data
     */
    @NotBlank(message = "Path cannot be blank")
    private String path;
    
    /**
     * 目录权限，默认为755
     * 例如：755、700等
     */
//    @Builder.Default 就是为了让 Builder 在未设置该字段时使用类中定义的默认值/
            /*
* 权限数字含义：
一个权限数字由 3 位 组成，分别表示：
所有者权限（Owner）
所属组权限（Group）
其他用户权限（Others）
每一位是三种权限的组合：
4 代表 读 (Read, r)
2 代表 写 (Write, w)
1 代表 执行 (Execute, x)
三者相加表示该类用户的权限：
7 = 4+2+1 → 读、写、执行（rwx）
5 = 4+0+1 → 读、执行（r-x）
0 = 0+0+0 → 无权限（---）*/
    @Builder.Default
    private int permissions = 755;
    
    /**
     * 目录所有者
     */
    @Builder.Default
    private String owner ="ccnu";
    
    /**
     * 目录所属用户组
     */
    private String group ="uses";
}
